package com.zkthink.ceres.product.dao;

import com.zkthink.base.mapper.SuperMapper;
import com.zkthink.ceres.product.dto.ProductCategoryDTO;
import com.zkthink.ceres.product.entity.ProductCategory;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * 商品分类表
 * </p>
 *
 * @author JustArgo
 * @date 2020-05-03
 */
@Repository
public interface ProductCategoryMapper extends SuperMapper<ProductCategory> {
    /** 根据父类id查子类id
     * @param parentCategoryId
     * @return
     */
    List<Long> selectCategoryIdByParentId(@Param("parentCategoryId") Long parentCategoryId);

    /** 根据类目id列表查询 子类id
     * @param parentIdList
     * @return
     */
    List<Long> selectCategoryIdByParentIdList(@Param("parentIdList") List<Long> parentIdList);

    /** 逻辑删除类目
     * @param categoryId
     * @return
     */
    int delCategory(@Param("categoryId") Long categoryId);

    /** 根据层级查询类目
     * @author JustArgo 2020/5/10 16:28
     * @return
     */
    List<ProductCategoryDTO> selectByDepth(Integer depth);

    /** 根据parentId 查询子级 dto列表
     * @author JustArgo 2020/5/10 16:59
     * @return
     */
    List<ProductCategoryDTO> selectDtoListByParentId(@Param("parentId") Long parentId, @Param("filterStatus") boolean filterStatus);

    /** 根据id查询dto
     * @author JustArgo 2020/5/10 17:04
     * @return
     */
    ProductCategoryDTO selectDtoById(Long id);

    /** 更新类目
     * @author JustArgo 2020/5/10 22:26
     * @return
     */
    int updateCategoryById(ProductCategory productCategory);

    /** 根据层级，分页查询
     * @author JustArgo 2020/5/14 21:59
     * @return
     */
    List<ProductCategoryDTO> selectByDepthLimit(@Param("depth")int depth, @Param("start")int start, @Param("pageSize")int pageSize);

    /** 类目处理
     * @author JustArgo 2020/5/30 11:05
     * @return
     */
    int delByDepthAndNotInIdList(@Param("parentId") Long parentId, @Param("depth")int depth, @Param("idList")List<Long> idList);
}
